/**
 * 给定一个无根树，每次操作将一条路径缩点
 * 问最少几次操作将树变为一个点
 * 显然要选叶子进行缩点，每次少2个叶子
 */
#include <bits/stdc++.h>
using namespace std;

#include <bits/extc++.h>
using namespace __gnu_pbds;

using llt = long long;
using pii = pair<int, int>;
using vi = vector<int>;
using vvi = vector<vi>;

int N, M;
vvi G;
vi Deg;

int proc(){
    int c = 0;
    for(int i=1;i<=N;++i)if(1==Deg[i])++c;
    return c + 1 >> 1;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(0);
    int nofkase = 1;
    cin >> nofkase;
    while(nofkase--){
        cin >> N;
        G.assign(N + 1, {});
        Deg.assign(N + 1, 0);
        for(int a,b,i=1;i<N;++i){
            cin >> a >> b;
            G[a].push_back(b);
            G[b].push_back(a);
            ++Deg[a]; ++Deg[b];
        }
        cout << proc() << endl;
    }
    return 0;
}